平台迁移那些事 | 企业级消息系统测试之道
作者 | 金涛
编辑 | 顾欣怡本文3629字,预计阅读时间12分钟更多干货请关注“eBay技术荟”公众号导读
“平台迁移那些事”是eBay EEE (Engineering Ecosystem and Experience) 团队最新推出的系列文章,从V3平台的陈旧应用无缝转移到eBay最新的Raptor.io平台,该项目涉及eBay百亿级流量的迁转,并要求在整个迁移过程中不影响任何实时服务,对eBay用户保持透明。本文将介绍迁移团队如何利用利用引流回放机制的自动化测试平台,成功完成多个消息系统的迁移。
一、给飞行中的飞机换引擎
随着eBay上一代的平台(V3)逐渐退出历史舞台,基于老平台开发的各种应用就必须要迁移到新的平台(Raptor)之上,这其中就包括了消息系统应用的迁移。要在一定的时限内,高质量地把应用从一个平台迁移到另一个平台本身就难度不小,而相比与其他类型的应用,消息系统的特殊性更是加大了迁移的难度。如何保证迁移的质量,如何提供完备的测试方案是迁移团队重点要攻克的难题。
从技术上看,消息系统迁移有如下测试难点:业务逻辑不清,测试用例不足。 许多应用因为年代久远,中间又几经转手,基本都没有测试用例了。再加上大部分团队都不是很清楚老应用的业务逻辑,需要大量的时间来读代码,制定实际测试方案,从而进行测试。 数据流向不固定,消费对象难定位。 理论上,新老平台上的消费者都能并行地消费消息,很难保证特定的消息被特定的消费者消费,也就没办法比较消息被新老平台处理后的结果了。 数据流动非同步,跟踪测试不直观。 消息系统是一个异步系统,这就大大增加了追踪测试数据、衡量测试结果的难度。
可控制 消息的流向是可以完全被控制的,这个目标主要是解决测试中消息跟踪难的问题。 自动化 要迁移的应用众多,每个应用中消费的消息类型种类繁多,要通过自动化的测试来覆盖所有的消息类型。这个目标要解决效率和测试用例覆盖率的问题,要在没有人为干预的情况下高效、高覆盖地完成测试。 可衡量 无论是对于功能完整性,还是对于非功能的性能、JVM 内存使用、GC Overhead 等性能指标,要有办法进行比较,原则上迁移应用应该不输甚至更胜过老的应用。这个目标就是要解决测试质量的问题。这些可比较可衡量的指标,不仅要让拆迁团队对于交付的质量有信心,同时也会使得用户对于接下来的验证工作有信心。
二、见招拆招
比较消息的处理状态。 如果消息被两边平台处理后的状态都是成功,那从某种角度来说新老应用的行为没有因为迁移而发生变化。 比较日志系统中生成的日志。 如果在新的平台上产生了异常信息,而在老平台上没有相应的异常,那就说明迁移中应用行为发生了改变,需要花时间去解决。 比较消息处理的时间以及系统的性能参数。 对于消息处理的SLA的比较,以及消费者机器的CPU,Memory,GC overhead等性能的比较,能够确保迁移后的应用没有任何性能上的问题。
三、解决方案
BES Mirror 会从老平台 (V3) 和新平台 (Raptor) 上分别选取一个消费者,用来做对照测试,在两个消费者上做相应的消息亲和配置。 BES Mirror从消息数据库中选取一定的消息,复制一份并且加上与消费者一致的亲和配置,重新写入数据库并等待消费者来消费消息。 两个消费者根据亲和配置,分别消费属于自己的消息,并且记录结果。 BES Mirror从各个渠道(记录消息处理结果的数据库,日志中心)获取并聚合不同平台上消费者的处理结果,做多维度的比较,并且得出对照测试的结果。
在BES Mirror的内部,提供了基于job的工作流模式,用户只需要简单地配置测试的内容,并且触发工作流,整个测试的过程就会自动化完成。下图即为BES Mirror的工作流图。
两个平台处理消息的状态是否一致。 相应的性能指标是否一致。
在日志中心生成的日志是否大体相同,是否没有新的错误日志出现。
测试效率高 自动化的测试流程大大缩短了测试所需要的时间,一个大中型的消息系统,如果要从头去理解内部逻辑,整理回归测试集,没有几个月时间根本完不成。但是BES Mirror大大简化了这个过程,只需要提供简单的配置 ,一键便能完成测试,总过程只需要大约1天时间。BES Mirror提供多维度自动比较,并通过丰富的GUI很好地展示出来,帮助迁移团队节约了大量发现问题的时间。 测试覆盖全 利用引流回放的测试方法,可以在无需知道应用内部逻辑的前提下,覆盖所有的消息类型,从而保证各种边界情况都被照顾到,各种边界的问题较早地暴露了出来并且被及时地修复了,上线再也不用心慌慌了。 使用范围广 这个自动化测试平台不仅可以用来满足拆迁的需求,更能被广义地用来测试消息系统应用,满足用户新功能开发、维护和系统升级的测试需求。
四、结语
您可能还感兴趣:
Hadoop平台进阶之路 | HDFS NameNode性能优化实践
Hadoop平台进阶之路| 一场PB规模量级的HDFS数据迁移实战
Hadoop平台进阶之路 | eBay Spark测试框架——Woody
从OpenStack到Kubernetes | 如何在大规模产线应用迁移中保证高可用性?
从Druid到ClickHouse | eBay广告平台数据OLAP实战
eBay大量优质职位,等的就是你